package ejb.cbm.seguridad.entity;

import java.util.Date;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="PERFILOPCION")
public class PerfilOpcionEntity  implements java.io.Serializable {

    // Fields    
	
     /**
	 * 
	 */
	private static final long serialVersionUID = -9107459910341971225L;
	private PerfilOpcionEntityId id;
     private PerfilEntity perfil;
     private OpcionEntity opcion;
     private Long flagactivo;
     private String usuarioregistro;
     private Date fecharegistro;
     private String usuariomodificacion;
     private Date fechamodificacion;

    // Constructors

    /** default constructor */
    public PerfilOpcionEntity() {
    }

	/** minimal constructor */
    public PerfilOpcionEntity(PerfilOpcionEntityId id, PerfilEntity perfil, OpcionEntity opcion, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.id = id;
        this.perfil = perfil;
        this.opcion = opcion;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
    }
    
    /** full constructor */
    public PerfilOpcionEntity(PerfilOpcionEntityId id, PerfilEntity perfil, OpcionEntity opcion, Long flagactivo, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.id = id;
        this.perfil = perfil;
        this.opcion = opcion;
        this.flagactivo = flagactivo;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
    }

    // Property accessors
    @EmbeddedId
    @AttributeOverrides( {
        @AttributeOverride(name="codigoperfil", column=@Column(name="CODIGOPERFIL", unique=false, nullable=false, insertable=true, updatable=true, length=10) ), 
        @AttributeOverride(name="codigoopcion", column=@Column(name="CODIGOOPCION", unique=false, nullable=false, insertable=true, updatable=true, precision=8, scale=0) ) } )

    public PerfilOpcionEntityId getId() {
        return this.id;
    }
    
    public void setId(PerfilOpcionEntityId id) {
        this.id = id;
    }
    @ManyToOne(cascade={},fetch=FetchType.LAZY)
    @JoinColumn(name="CODIGOPERFIL", unique=false, nullable=false, insertable=false, updatable=false)
    public PerfilEntity getPerfil() {
        return this.perfil;
    }
    
    public void setPerfil(PerfilEntity perfil) {
        this.perfil = perfil;
    }
    @ManyToOne(cascade={},fetch=FetchType.LAZY)
    @JoinColumn(name="CODIGOOPCION", unique=false, nullable=false, insertable=false, updatable=false)

    public OpcionEntity getOpcion() {
        return this.opcion;
    }
    
    public void setOpcion(OpcionEntity opcion) {
        this.opcion = opcion;
    }
    
    @Column(name="FLAGACTIVO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagactivo() {
        return this.flagactivo;
    }
    
    public void setFlagactivo(Long flagactivo) {
        this.flagactivo = flagactivo;
    }
    
    @Column(name="USUARIOREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuarioregistro() {
        return this.usuarioregistro;
    }
    
    public void setUsuarioregistro(String usuarioregistro) {
        this.usuarioregistro = usuarioregistro;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFecharegistro() {
        return this.fecharegistro;
    }
    
    public void setFecharegistro(Date fecharegistro) {
        this.fecharegistro = fecharegistro;
    }
    
    @Column(name="USUARIOMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuariomodificacion() {
        return this.usuariomodificacion;
    }
    
    public void setUsuariomodificacion(String usuariomodificacion) {
        this.usuariomodificacion = usuariomodificacion;
    }
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=7)

    public Date getFechamodificacion() {
        return this.fechamodificacion;
    }
    
    public void setFechamodificacion(Date fechamodificacion) {
        this.fechamodificacion = fechamodificacion;
    }
}